// 任务类型定义
export interface Task {
  id: string
  title: string
  description?: string
  task_type: TaskType  // 修复字段名，与后端对齐
  status: TaskStatus
  priority: TaskPriority
  project_id: string
  project_name?: string
  version_id?: string
  version_number?: string
  version_name?: string
  assignee_id?: string
  assignee_name?: string
  assignee_avatar?: string
  reporter_id?: string
  reporter_name?: string
  created_by: string
  creator_name?: string
  creator_avatar?: string  // 添加创建人头像字段
  parent_id?: string
  start_date?: string
  due_date?: string
  estimated_hours?: number
  actual_hours?: number
  progress: number
  tags?: string[]
  created_at: string
  updated_at: string
  updated_by?: string
  // 新增统计字段，与API响应对齐
  comment_count?: number
  attachment_count?: number
  total_time_spent?: number
  is_overdue?: boolean
  comments?: TaskComment[]
  // 新增需求关联字段
  requirement_id?: string
  requirement_title?: string
}

// 任务创建表单
export interface TaskCreateForm {
  title: string
  description?: string
  task_type: TaskType  // 修复字段名，与后端对齐
  status: TaskStatus  // 添加缺失的状态字段
  priority: TaskPriority
  project_id: string
  assignee_id?: string
  reporter_id: string  // 添加必需的报告人字段
  parent_id?: string
  requirement_id?: string
  start_date?: string
  due_date?: string
  estimated_hours?: number
  tags?: string[]
  version_ids?: string[]  // 添加版本ID列表字段
  iteration_id?: string  // 迭代ID（前端使用，后端暂不支持）
  participants?: string[]  // 参与者列表（前端使用，后端暂不支持）
}

// 任务更新表单
export interface TaskUpdateForm {
  title?: string
  description?: string
  task_type?: TaskType  // 修复字段名，与后端对齐
  status?: TaskStatus
  priority?: TaskPriority
  assignee_id?: string
  start_date?: string
  due_date?: string
  estimated_hours?: number
  actual_hours?: number
  progress?: number
  requirement_id?: string
  tags?: string[]
}

// 任务筛选条件
export interface TaskFilter {
  page?: number
  limit?: number
  search?: string
  project_id?: string
  version_id?: string
  assignee_id?: string
  reporter_id?: string
  status?: TaskStatus
  priority?: TaskPriority
  task_type?: TaskType  // 修复字段名，与后端对齐
  start_date?: string
  end_date?: string
  due_date_from?: string
  due_date_to?: string
  tags?: string[]
  sort_by?: string
  sort_order?: 'asc' | 'desc'
}

// 任务统计 - 使用动态状态统计
export interface TaskStats {
  total: number
  tasks_by_status: Record<string, number>  // 所有状态的统计，动态从状态管理系统获取
  overdue: number
  completed_this_week?: number
  created_this_week?: number
}

// 任务评论
export interface TaskComment {
  id: string
  task_id?: string
  content: string
  user_id: string
  user_name: string
  user_avatar?: string
  parent_comment_id?: string
  status?: string  // 评论状态（动态状态）
  is_deleted: boolean  // 已废弃，使用status字段
  created_at: string
  updated_at: string
  // 兼容旧字段
  author_id?: string
  author_name?: string
  author_avatar?: string
}

// 任务附件
export interface TaskAttachment {
  id: string
  task_id?: string
  filename: string
  original_filename?: string
  original_name?: string // 兼容字段
  file_size: number
  file_type: string
  file_url?: string
  url?: string // 兼容字段
  uploaded_by: string
  uploaded_at: string | Date
}

// 任务活动
export interface TaskActivity {
  id: string
  task_id: string
  action: string
  description: string
  old_value?: string
  new_value?: string
  user_id: string
  user_name: string
  created_at: string
}

// 任务依赖
export interface TaskDependency {
  id: string
  task_id: string
  depends_on_id: string
  depends_on_title: string
  dependency_type: 'finish_to_start' | 'start_to_start' | 'finish_to_finish' | 'start_to_finish'
  created_at: string
}

// 任务类型枚举
export type TaskType = 'feature' | 'bug' | 'improvement' | 'documentation' | 'test' | 'other'

// 任务状态类型（动态状态，从后端获取）
export type TaskStatus = string

// 任务优先级枚举
export type TaskPriority = 'lowest' | 'low' | 'medium' | 'high' | 'urgent' | 'critical' | 'blocker'

// 任务类型选项
export const TASK_TYPES = [
  { value: 'feature', label: '功能开发' },
  { value: 'bug', label: '缺陷修复' },
  { value: 'improvement', label: '改进优化' },
  { value: 'documentation', label: '文档编写' },
  { value: 'test', label: '测试任务' },
  { value: 'other', label: '其他' }
] as const

// 任务状态选项 - 已迁移到动态状态管理
// 使用 useTaskStates composable 获取状态选项
// 保留此导出仅为向后兼容，建议使用 useTaskStates() 获取状态选项
export const TASK_STATUSES: Array<{ value: string; label: string }> = []

// 任务优先级选项
export const TASK_PRIORITIES = [
  { value: 'lowest', label: '最低' },
  { value: 'low', label: '低' },
  { value: 'medium', label: '中' },
  { value: 'high', label: '高' },
  { value: 'highest', label: '最高' }
] as const